Non-volatile storage devices, such as Flash memory devices, have a number of different storage locations or physical addresses at which data may be stored. Different storage locations may have different associated reliabilities or error rates, due to different physical and/or electrical properties of the respective storage locations.
An error-correction code (ECC) may be used to correct errors in stored data, whether the errors are caused by different properties of the different storage locations or otherwise. Accordingly, data may be encoded and stored as ECC code words, so that certain errors in the data may be corrected. However, due to the different reliabilities or error rates of different storage locations, certain ECC code words may have more errors than others, requiring each ECC code word to use a stronger ECC with more redundant data, even for ECC code words stored in more reliable locations with lower error rates. Using a stronger ECC can increase the storage overhead required to store user data, due to redundant data added for the ECC, thereby reducing a storage capacity available to store the user data. Using a stronger ECC can also increase a processing overhead to encode and/or decode the associated data.